home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / LINUX / SLAB.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  2KB  |  72 lines

  1. /*
  2.  * linux/mm/slab.h
  3.  * Written by Mark Hemment, 1996.
  4.  * (markhe@nextd.demon.co.uk)
  5.  */
  6.  
  7. #if    !defined(_LINUX_SLAB_H)
  8. #define    _LINUX_SLAB_H
  9.  
  10. #if    defined(__KERNEL__)
  11.  
  12. typedef struct kmem_cache_s kmem_cache_t;
  13.  
  14. #include    <linux/mm.h>
  15. #include    <asm/cache.h>
  16.  
  17. /* flags for kmem_cache_alloc() */
  18. #define    SLAB_BUFFER        GFP_BUFFER
  19. #define    SLAB_ATOMIC        GFP_ATOMIC
  20. #define    SLAB_USER        GFP_USER
  21. #define    SLAB_KERNEL        GFP_KERNEL
  22. #define    SLAB_NFS        GFP_NFS
  23. #define    SLAB_DMA        GFP_DMA
  24.  
  25. #define SLAB_LEVEL_MASK        0x0000007fUL
  26. #define    SLAB_NO_GROW        0x00001000UL    /* don't grow a cache */
  27.  
  28. /* flags to pass to kmem_cache_create().
  29.  * The first 3 are only valid when the allocator as been build
  30.  * SLAB_DEBUG_SUPPORT.
  31.  */
  32. #define    SLAB_DEBUG_FREE        0x00000100UL    /* Peform (expensive) checks on free */
  33. #define    SLAB_DEBUG_INITIAL    0x00000200UL    /* Call constructor (as verifier) */
  34. #define    SLAB_RED_ZONE        0x00000400UL    /* Red zone objs in a cache */
  35. #define    SLAB_POISON        0x00000800UL    /* Poison objects */
  36. #define    SLAB_NO_REAP        0x00001000UL    /* never reap from the cache */
  37. #define    SLAB_HWCACHE_ALIGN    0x00002000UL    /* align objs on a h/w cache lines */
  38. #if    0
  39. #define    SLAB_HIGH_PACK        0x00004000UL    /* XXX */
  40. #endif
  41.  
  42. /* flags passed to a constructor func */
  43. #define    SLAB_CTOR_CONSTRUCTOR    0x001UL        /* if not set, then deconstructor */
  44. #define SLAB_CTOR_ATOMIC    0x002UL        /* tell constructor it can't sleep */
  45. #define    SLAB_CTOR_VERIFY    0x004UL        /* tell constructor it's a verify call */
  46.  
  47. /* prototypes */
  48. extern long kmem_cache_init(long, long);
  49. extern void kmem_cache_sizes_init(void);
  50. extern kmem_cache_t *kmem_find_general_cachep(size_t);
  51. extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
  52.                        void (*)(void *, kmem_cache_t *, unsigned long),
  53.                        void (*)(void *, kmem_cache_t *, unsigned long));
  54. extern int kmem_cache_shrink(kmem_cache_t *);
  55. extern void *kmem_cache_alloc(kmem_cache_t *, int);
  56. extern void kmem_cache_free(kmem_cache_t *, void *);
  57.  
  58. extern void *kmalloc(size_t, int);
  59. extern void kfree(const void *);
  60. extern void kfree_s(const void *, size_t);
  61.  
  62. extern void kmem_cache_reap(int);
  63. extern int get_slabinfo(char *);
  64.  
  65. /* System wide caches */
  66. extern kmem_cache_t    *vm_area_cachep;
  67. extern kmem_cache_t    *mm_cachep;
  68.  
  69. #endif    /* __KERNEL__ */
  70.  
  71. #endif    /* _LINUX_SLAB_H */
  72.